const url_all = {
	'LOCAL-EVN': 'http://localhost:9090', // 本地环境
	'SERVER-EVN': 'http://39.105.199.168:9090' // 服务器环境
}

// 根据环境动态设置 BASE_URL
function getBaseUrl() {
	return process.env.NODE_ENV === 'development' ? url_all['LOCAL-EVN'] : url_all['SERVER-EVN'];
}

const BASE_URL = getBaseUrl();

// 请求超时时间
const TIME_OUT = 30000;

// 获取请求头，动态获取 token
function getHeaders() {
	const systemUser = uni.getStorageSync('system-user');
	const token = systemUser ? systemUser.token : '';

	return {
		'Content-Type': 'application/json;charset=utf-8',
		'token': token
	};
}

// 全局错误处理
function handleError(res) {
	if (res.data.code === '401') {
		// 无 token 时自动跳转登录页
		uni.navigateTo({
			url: '/pages/individual/login/login'
		});
		return;
	}
	throw new Error(res.data.msg || '服务器错误');
}

/**
 * 全局请求封装
 * @param path 请求路径
 * @param method 请求类型(GET/POST/DELETE等)
 * @param data 请求体数据
 * @param loading 请求未完成时是否显示加载中，默认为 true
 */
function request(path, method, data = {}, loading = true) {
	console.log(`Requesting: ${BASE_URL + path}`, {
		method,
		data
	}); // 日志输出

	return new Promise((resolve, reject) => {
		const headers = getHeaders();
		uni.request({
			url: BASE_URL + path,
			method: method,
			data,
			header: headers,
			timeout: TIME_OUT,
			success(response) {

				console.log('Response:', response); // 输出响应日志

				let res = response.data;
				

				// 无 token 时自动跳转登录页
				if (res.code === '401') {
					// 无 token 时自动跳转登录页
					uni.navigateTo({
						url: '/pages/individual/login/login'
					});
				} else {
					resolve(res);
				}
			},
			fail(err) {
				if (loading) {
					uni.hideLoading();
				}

				console.error('Request failed:', err); // 输出错误日志
				reject(new Error(err.message || '请求失败'));
			}
		});
	});
}

export default request;